#pragma once
#ifndef GUI_H
#define GUI_H

//this clas contains the gui and everything
#include "Host.h"

//vertex data for rendering
#include "RendererComponent.h"

//desribes the design
#include "Design.h"

//controls
#include "Control_Button.h"
#include "Control_Interface.h"
#include "Control_Label.h"
#include "Control_Interface.h"
#include "Control_CheckBox.h"
#include "Control_Menu.h"
#include "Control_MenuDropdown.h"
#include "Control_String.h"
#include "Control_ScrollBar.h"

#endif

//============= USAGE ==================

/*

#include <Gui.h>

gui::Host Host;
gui::Design Design;

int _tmain(int argc, _TCHAR* argv[])
{
	gui::Host Host;
	ParticleEngine::Engine Engine(Host.Status);

	//menus rein
	Host.AddMenuFunction("Main",
	[&Host, &Engine](){
	gui::Control_Menu* Menu = new gui::Control_Menu(
	std::string("Main"),
	Design.ColorMenuBack(),
	Design.NullPos(),
	Design.MaxSize(),
	Host);

	Menu->AddControl(new gui::Control_Label(
	"PARSIM",
	Design.SizeFont(6.f),
	Design.ColorWhite(),
	Design.ColorTransparent(),
	Design.NullPos(),
	Design.SizeControl(32, 6),
	Menu, Host));
	return Menu;
	});


	Host.AddInterface(new gui::Control_Interface(
	[](){ std::cout << "Refresh\n"; },
	[](gui::RendererComponent& Renderer){ std::cout << "Update Vertices\n";  },
	[](){ std::cout << "Mouse Move\n"; },
	[](){ std::cout << "Mouse Down Left\n"; },
	[](){ std::cout << "Mouse Up Left\n"; },
	[](){ std::cout << "Mouse Down Right\n"; },
	[](){ std::cout << "Mouse Up Right\n"; },
	Host
	));

	Host.OpenMenuSingle("Main");

	Engine.StartThread();//startet die engine in einem extra thread

	Host.Open(false, "Parism");

	Engine.StopThread();

	return 0;
}

*/
